package com.common.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 过滤HTML标签
 * @author Administrator
 *
 */
public class HTMLSpirit{ 
	
	public static String delTag(String htmlStr){
		return stripLine(stripHtml(delHTMLTag(htmlStr)));
	}
	
    public static String delHTMLTag(String htmlStr){ 
        String regEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式
        String regEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式
        String regEx_html="<[^>]+>"; // 定义HTML标签的正则表达式
         
        Pattern p_script=Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE); 
        Matcher m_script=p_script.matcher(htmlStr); 
        htmlStr=m_script.replaceAll(""); // 过滤script标签
         
        Pattern p_style=Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE); 
        Matcher m_style=p_style.matcher(htmlStr); 
        htmlStr=m_style.replaceAll(""); // 过滤style标签
         
        Pattern p_html=Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE); 
        Matcher m_html=p_html.matcher(htmlStr); 
        htmlStr=m_html.replaceAll(""); // 过滤html标签

        return htmlStr.trim(); // 返回文本字符串
    } 
    /**
     * 去掉字符串里面的html代码。<br>
     * 要求数据要规范，比如大于小于号要配套,否则会被集体误杀。
     * 
     * @param content
     *            内容
     * @return 去掉后的内容
     */ 
    public static String stripHtml(String content) { 
//     <p>段落替换为换行
    content = content.replaceAll("<p .*?>", ""); 
//     <br><br/>替换为换行
    content = content.replaceAll("<br\\s*/?>", ""); 
    content = content.replaceAll("\\<.*?>", ""); 
//     还原HTML
//     content = HTMLDecoder.decode(content);
    return content; 
    } 
    
    public static String stripLine(String content) { 
//      <p>段落替换为换行
     content = content.replaceAll("\n\r", ""); 
     content = content.replaceAll(" ", "");
     content = content.replaceAll("&nbsp;", "");
     content = content.replaceAll("\t", "");
     content = content.replaceAll("&lt;", "<");
     content = content.replaceAll("&gt;", ">");
     content = content.replaceAll("&nbsp;", " ");
     content = content.replaceAll("&amp;", "&");
     content = content.replaceAll("&quot;", "\"");
     return content; 
     } 
} 


//Java中去掉网页HTML标记的方法 
//Java里面去掉网页里的HTML标记的方法： 

